package threadjuc;

import java.util.stream.LongStream;

/**
 * @author zxl
 * @version 1.0
 * @date 2021/10/28 14:54
 */
public class Sum {
    public static void main(String[] args) {
        test1();
        test2();
    }

    private static void test1() {
        long start = System.currentTimeMillis();
        long sum = 0;
        for (long i = 0L; i <= 50_0000_0000L; i++) {
            sum += i;
        }
        long end = System.currentTimeMillis();
        System.out.println(sum+"时间"+(end-start));
    }

    /**
     * forkjoin  必须是大数据量才使用
     * 拆分任务 ： 将一个任务拆分成多个任务执行
     * 工作窃取 ： 当其中一条线程先执行结束后，会重其他的线程中拿取任务执行
     */

    //使用并行计算 效率很高
    private static void test2() {
        long start = System.currentTimeMillis();
        long sum = LongStream.rangeClosed(0L, 50_0000_0000L).parallel().sum();
        long end = System.currentTimeMillis();
        System.out.println(sum+"时间"+(end-start));
    }

}
